{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 2, 3, 4])"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "data = [1, 2, 3, 4]\n",
    "\n",
    "arr = np.array(data)\n",
    "\n",
    "arr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 2, 3, 4],\n",
       "       [1, 2, 3, 4]])"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data1 = [data, data]\n",
    "arr1 = np.array(data1)\n",
    "arr1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0., 0., 0.],\n",
       "       [0., 0., 0.],\n",
       "       [0., 0., 0.]])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "\n",
    "np.zeros((3,3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1., 1., 1.],\n",
       "       [1., 1., 1.],\n",
       "       [1., 1., 1.]])"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "np.ones((3,3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 3, 5, 7, 9])"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "np.arange(1, 10, 2) # 创建　1 ~ 10 且差为　2 的等差数列\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1.,  4.,  7., 10.])"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "np.linspace(1, 10, 4) # 创建　1 ~ 10 且长度为　4 的等差数列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('int64')"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "\n",
    "arr2 = np.array([1, 2, 3, 4, 5])\n",
    "arr2.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('float64')"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "arr3 = np.array([1.1, 2.3, 3, 4])\n",
    "arr3.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('<U1')"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "arr4 = np.array(['量', '化', '分', '析'])\n",
    "arr4.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1., 2., 3., 4., 5.])"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "float_arr2 = arr2.astype(np.float64) # 数据类型　之间的转换\n",
    "\n",
    "float_arr2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 2, 3, 4], dtype=int32)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "int_arr3 = arr3.astype(np.int32)\n",
    "int_arr3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['1.1', '2.3', '3.0', '4.0'], dtype='<U32')"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "u_arr3 = arr3.astype(np.unicode_)\n",
    "u_arr3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 2, 3],\n",
       "       [4, 5, 6]])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "arr4 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])\n",
    "arr4\n",
    "\n",
    "arr4[1]\n",
    "\n",
    "arr4[1, 1]\n",
    "\n",
    "arr4[:2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[1 2 3]\n",
      " [4 5 6]\n",
      " [7 8 9]]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[10, 10,  3],\n",
       "       [10, 10,  6],\n",
       "       [ 7,  8,  9]])"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(arr4)\n",
    "arr4[:2, :2] = 10\n",
    "arr4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arr5 = arr4.copy()[:2, :2] = 5\n",
    "arr4\n",
    "arr5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 2,  4,  6],\n",
       "       [ 8,  8, 12],\n",
       "       [14, 16, 18]])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "\n",
    "arr5 = np.array([[1, 2, 3], \n",
    "                [4, 4, 6], \n",
    "                [7, 8, 9]])\n",
    "\n",
    "arr5 + arr5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1,  4,  9],\n",
       "       [16, 16, 36],\n",
       "       [49, 64, 81]])"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arr5 * arr5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 2,  4,  6],\n",
       "       [ 8,  8, 12],\n",
       "       [14, 16, 18]])"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    " arr5 * 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1.        , 1.41421356, 1.73205081],\n",
       "       [2.        , 2.        , 2.44948974],\n",
       "       [2.64575131, 2.82842712, 3.        ]])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arr5 ** 0.5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "44"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "arr5.sum() # 对数组中的全部或某个抽象元素进行求和"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.601044424604361"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arr5.std() # 标准差"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4.888888888888889"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arr5.mean() # 算数平均数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "9"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arr5.max() # 最大值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6.765432098765432"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arr5.var() # 方差"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arr5.min() # 最小值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arr5.argmin() # 最小值索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "8"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arr5.argmax()  # 最大值索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1,  3,  6, 10, 14, 20, 27, 35, 44])"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arr5.cumsum() # 所有元素的累计和"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([     1,      2,      6,     24,     96,    576,   4032,  32256,\n",
       "       290304])"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arr5.cumprod() # 所有元素累计积"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1,  4,  9],\n",
       "       [16, 16, 36],\n",
       "       [49, 64, 81]])"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 我们可以自定义函数，再将其传入　ndarray 中。\n",
    "\n",
    "def f(x):\n",
    "    return x ** 2\n",
    "\n",
    "f(arr5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy.random as npr\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.67778334, 0.59483106],\n",
       "       [0.67137922, 0.08404817],\n",
       "       [0.79763212, 0.71499181]])"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "npr.rand(3, 2) # 可以用来生成　[0, 1) 的随机多维数组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[3.63741404, 3.77099951],\n",
       "       [3.13117249, 2.35458706],\n",
       "       [2.51780359, 3.31164338]])"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "#稍微开动一下大脑,就可以将　随机区间　转化为　[2, 4)\n",
    "a = 2\n",
    "b = 4\n",
    "npr.rand(3, 2) * (b - a) + a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "size = 1000\n",
    "\n",
    "rn1 = npr.rand(size, 2) # 生成半开区间　[0, 1) 内的多维随机数\n",
    "rn2 = npr.randn(size) # 生成来自标准正太分布的多个样本\n",
    "rn3 = npr.randint(0, 10, size) # 生成半开区间[low, high) 内的随机整数\n",
    "\n",
    "rang = [0, 10, 20, 30, 40]\n",
    "\n",
    "rn4 = npr.choice(rang, size = size) # 生成在给定的一维数组中的随机样本\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x720 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(nrows = 2, ncols = 2, figsize = (10, 10))\n",
    "\n",
    "ax1.hist(rn1, bins = 100, stacked=True)\n",
    "ax1.set_title('rand')\n",
    "ax1.set_ylabel('frequency')\n",
    "ax1.grid(True)\n",
    "\n",
    "ax2.hist(rn2, bins = 100)\n",
    "ax2.set_title('randn')\n",
    "ax2.grid(True)\n",
    "\n",
    "ax3.hist(rn3, bins = 25)\n",
    "ax3.set_title('randint')\n",
    "ax3.set_ylabel('frequency')\n",
    "ax3.grid(True)\n",
    "\n",
    "ax4.hist(rn4, bins = 100)\n",
    "ax4.set_title('choice')\n",
    "ax4.grid(True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 许多金融模型，都依赖于正态分布。我们可以通过生成相应的随机数，来将原本连续的金融模型离散化，从而进行近似模拟。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmgAAAJOCAYAAAADGvtiAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3XucJXV95//XWxBExCAiHQR0MIIbdBIiEzTrxu1ILohGMKsGQhQQHZMfeNnfuHFQdzVrzGJWJBqzmFFUNCjgLRAxRkRaY1YwgERAJFwcZWAElOuIQRs++8epxkPTM3N6pk+fb3e/no/HefSpb1WdeldNT/XnfOuWqkKSJEnteNioA0iSJOnBLNAkSZIaY4EmSZLUGAs0SZKkxligSZIkNcYCTZIkqTEWaJpzSdYm+c0Z2n89ydUjyDPwcpMcneSrw84kSVsryUSSV4w6h4Zj21EH0NJRVf8EPGWpLFeSpC1lD5okSUOWxA4RzYoFmoblV5N8K8ntST6U5BFJxpOsm5qgOxT6+iTfTHJnkjOTPKJv/CuTXJvktiTnJHl837hK8v8luSbJ3UneluQXknwtyV1JzkqyXTft9OWuTnJdN9+3krxwvjaKpIVnU/uqAfZTxyW5Brimr23Qfddjknw2ya3dvvSzSfYcyUbQvLNA07AcCfwO8AvAvsCbNzLdS4CDgb2BXwKOBkjyHOB/deN3B74LnDFt3oOBA4BnAn8CrOmWuxfwNOCIjSzzOuDXgZ8D/hT42yS7z3L9JC0tD9lXDbifOgx4BrBfX9ug+66HAR8Cngg8Afgx8N45Xi81ygJNw/Leqrqhqm4D3s7Gi6X3VNVN3XR/D+zftR8JfLCqLq2qe4ETgF9Lsqxv3ndU1V1VdSVwBfCFqrq+qu4E/gH4lZkWWFWf6JZ5f1WdSe+b7YFbt7qSFrmZ9lWD7Kf+V1XdVlU/7msbaN9VVT+sqk9V1T1VdTe9fel/HvaKqg0WaBqWG/refxd4/Eam+37f+3uAR3XvH9/NB0BVbQB+COzRN/3Nfe9/PMPwo5hBkpcluSzJHUnuoPeNddeNr4okzbivGmQ/1b8vnDLQvivJI5P8TZLvJrkL+Aqwc5JttmZFtDBYoGlY9up7/wTgplnOfxO9bn0AkuwIPBa4cWtCJXki8H7geOCxVbUzvW+w2ZrPlbQkDbKfqq34/FX0rkB/RlU9Gnj21KK24jO1QFigaViOS7Jnkl2ANwJnznL+jwHHJNk/yfbAnwMXVdXarcy1I70d5q0ASY6h14MmSbM1rP3UlJ3o9ajd0e1L3zJHn6sFwAJNw/Ix4AvA9d3rz2Yzc1WdD/x34FPAenoXGxy+taGq6lvAScDX6B1WWA7889Z+rqSlZ1j7qT5/CewA/AC4EPj8HH62Gpeqrel9lSRJ0lyzB02SJKkxFmiSJEmNsUCTJElqjAWaJElSYxb0w1t33XXXWrZs2QPDP/rRj9hxxx1HF2gTWs1mrtlrNVuruWBus11yySU/qKrHzcmHjdj0fdjmtPRvbJaZtZKllRxgln6z2n9V1YJ9HXDAAdXvggsuqFa1ms1cs9dqtlZzVc1tNuDiamD/Mxev6fuwzWnp39gsM2slSys5qszSbzb7Lw9xSpIkNcYCTZIkqTEWaJIkSY2xQJMkSWqMBZokSVJjLNAkSZIaY4EmSZLUmKEVaEk+mOSWJFf0tZ2Z5LLutTbJZV37siQ/7hv3vmHlkiRJat0wnyTwYeC9wEemGqrq96feJzkJuLNv+uuqav8h5pEkSVoQhlagVdVXkiybaVySAC8BnjOs5UuSJC1Uo3oW568DN1fVNX1teyf5BnAX8Oaq+qeZZkyyElgJMDY2xsTExAPjNmzY8KDhlrSabZi5Lr/xzs1Os3yPn5uxvdXtBe1mazUXtJ1NasGy1edudpq1Jz5vHpKoFaMq0I4APt43vB54QlX9MMkBwN8leWpV3TV9xqpaA6wBWLFiRY2Pjz8wbmJigv7hlrSabZi5jh5kh3PkzMtudXtBu9lazQVtZ5OkFs37VZxJtgV+Dzhzqq2q7q2qH3bvLwGuA/ad72ySJEktGMVtNn4T+HZVrZtqSPK4JNt0758E7ANcP4JskiRJIzfM22x8HPga8JQk65Ic2406nAcf3gR4NvDNJP8KfBL4o6q6bVjZJEmSWjbMqziP2Ej70TO0fQr41LCySJIkLSSjukhAkiTNwiBXeoJXey4WPupJkiSpMRZokiRJjbFAkyRJaowFmiRJUmMs0CRJkhpjgSZJktQYCzRJkqTGWKBJkiQ1xgJNkiSpMRZokiRJjbFAkyRJaowFmiRJUmMs0CRJkhpjgSZJktQYCzRJkqTGWKBJkiQ1xgJNkiSpMRZokjSDJB9MckuSK/radklyXpJrup+P6dqT5D1Jrk3yzSRPH11ySYuBBZokzezDwMHT2lYD51fVPsD53TDAc4F9utdK4JR5yihpkbJAk6QZVNVXgNumNR8KnNa9Pw04rK/9I9VzIbBzkt3nJ6mkxWjbUQeQpAVkrKrWA1TV+iS7de17ADf0Tbeua1s//QOSrKTXy8bY2BgTExMDL3zDhg2zmn6YzDKzLc2yavnknGWYmJhYFNtkGFrKsjkWaJK09TJDW800YVWtAdYArFixosbHxwdeyMTEBLOZfpjMMrMtzXL06nPnLMPaI8cXxTYZhpaybI6HOCVpcDdPHbrsft7Sta8D9uqbbk/gpnnOJmkRsUCTpMGdAxzVvT8KOLuv/WXd1ZzPBO6cOhQqSVtiaIc4k3wQeD5wS1U9rWt7K/BK4NZusjdW1ee6cScAxwL3Aa+pqn8cVjZJ2pwkHwfGgV2TrAPeApwInJXkWOB7wIu7yT8HHAJcC9wDHDPvgdWsZXN4+FJLxzDPQfsw8F7gI9PaT66qd/Y3JNkPOBx4KvB44ItJ9q2q+4aYT5I2qqqO2Miog2aYtoDjhptI0lIytEOcG7lEfWMOBc6oqnur6jv0voUeOKxskiRJLRvFVZzHJ3kZcDGwqqpup3c5+oV900xdov4Qm7pEveXLZ1vNNsxcg1w2vrFlt7q9oN1sreaCtrNJUovmu0A7BXgbvcvP3wacBLycObpEveXLZ1vNNsxcg1w2vvbImZfd6vaCdrO1mgvaziZJLZrXqzir6uaquq+q7gfez88OY3qJuiRJUmdeC7Rpjz55ITD1EOJzgMOTbJ9kb3rPs/v6fGaTJElqxTBvszHTJerjSfand/hyLfAqgKq6MslZwLeASeA4r+CUJElL1dAKtI1con7qJqZ/O/D2YeWRJElaKHySgCRJUmMs0CRJkhpjgSZJktQYCzRJkqTGWKBJkiQ1xgJNkiSpMRZokiRJjbFAkyRJaowFmiRJUmMs0CRJkhpjgSZJktQYCzRJkqTGWKBJkiQ1xgJNkiSpMRZokiRJjbFAkyRJaowFmiRJUmMs0CRJkhqz7agDSJK0UC1bfe6Dhlctn+ToaW3SlrAHTZIkqTEWaJIkSY2xQJMkSWqMBZokSVJjLNAkSZIaM7QCLckHk9yS5Iq+tv+d5NtJvpnkM0l27tqXJflxksu61/uGlUuSJKl1w+xB+zBw8LS284CnVdUvAf8GnNA37rqq2r97/dEQc0mSJDVtaAVaVX0FuG1a2xeqarIbvBDYc1jLl6RhSfJfk1yZ5IokH0/yiCR7J7koyTVJzkyy3ahzSlq4Rnmj2pcDZ/YN753kG8BdwJur6p9mminJSmAlwNjYGBMTEw+M27Bhw4OGW9JqtmHmWrV8crPTbGzZrW4vaDdbq7mg7WyzlWQP4DXAflX14yRnAYcDhwAnV9UZ3WkaxwKnjDCqpAVsJAVakjcBk8DpXdN64AlV9cMkBwB/l+SpVXXX9Hmrag2wBmDFihU1Pj7+wLiJiQn6h1vSarZh5hrkbtprj5x52a1uL2g3W6u5oO1sW2hbYIckPwUeSW8f9hzgD7rxpwFvxQJN0haa9wItyVHA84GDqqoAqupe4N7u/SVJrgP2BS6e73yStClVdWOSdwLfA34MfAG4BLij7xSOdcAeM82/qaMAm9NST+Riz3L5jXcONN2q5Q8eHtthsKMHwzQxMbHo/322VEtZNmdeC7QkBwNvAP5zVd3T1/444Laqui/Jk4B9gOvnM5skDSLJY4BDgb2BO4BPAM+dYdKaaf5NHQXYnJZ6Ihd7li19nuaq5ZOcdPloH3O99sjxRf/vs6VayrI5Q/stSvJxYBzYNck64C30rtrcHjgvCcCF3RWbzwb+Z5JJ4D7gj6rqthk/WJJG6zeB71TVrQBJPg38R2DnJNt2vWh7AjeNMKOkBW5oBVpVHTFD86kbmfZTwKeGlUWS5tD3gGcmeSS9Q5wH0Tsd4wLgRcAZwFHA2SNLKGnBG20/rCQtMFV1UZJPApfSu9jpG/QOWZ4LnJHkz7q2Gb+QSsO2bPW5rFo+ucnDtGtPfN48JtKWsECTpFmqqrfQO22j3/XAgSOII2kRskCTJGmJWTbIbZDsZRspH5YuSZLUGAs0SZKkxligSZIkNcYCTZIkqTEWaJIkSY2xQJMkSWqMBZokSVJjLNAkSZIaY4EmSZLUGAs0SZKkxligSZIkNcYCTZIkqTEWaJIkSY3ZbIGWZJf5CCJJkqSeQXrQLkryiSSHJMnQE0mSJC1xgxRo+wJrgJcC1yb58yT7DjeWJEnS0rXZAq16zquqI4BXAEcBX0/y5SS/NvSEkiRJS8y2m5sgyWOBP6TXg3Yz8GrgHGB/4BPA3sMMKEmStNRstkADvgZ8FDisqtb1tV+c5H3DiSVJkrR0DVKgPaWqaqYRVfWOOc4jSZK05A1ykcAXkuw8NZDkMUn+cYiZJEmSlrRBCrTHVdUdUwNVdTuw2/AiSZIkLW2DFGj3JXnC1ECSJwIzHvKcLskHk9yS5Iq+tl2SnJfkmu7nY7r2JHlPkmuTfDPJ02e7MpIkSYvBIAXam4CvJvloko8CXwFOGPDzPwwcPK1tNXB+Ve0DnN8NAzwX2Kd7rQROGXAZkiRJi8og90H7PPB04EzgLOCAqhroHLSq+gpw27TmQ4HTuvenAYf1tX+ku+/ahcDOSXYfZDmSJEmLySBXcQJsT6/Q2hbYL8lU8bUlxqpqPUBVrU8ydT7bHsANfdOt69rW98+cZCW9HjbGxsaYmJh4YNyGDRseNNySVrMNM9eq5ZObnWZjy251e0G72VrNBW1nk6QWDXKj2ncAvw9cCdzfNRe9Q51zaabnfD7kXLeqWkPv0VOsWLGixsfHHxg3MTFB/3BLWs02zFxHrz53s9OsPXLmZY9yey3bTO5Vy+/j1c8fn58ws9Dq7xi0nU2SWjRID9ph9O6Fdu8cLfPmJLt3vWe7A7d07euAvfqm2xO4aY6WKUmStGAMUqBdDzwcmKsC7Rx6z/M8sft5dl/78UnOAJ4B3Dl1KFSSpLmyuV5yqQWDFGj3AJclOZ++Iq2qXrO5GZN8HBgHdk2yDngLvcLsrCTHAt8DXtxN/jngEODabpnHDL4akiRJi8cgBdo53WvWquqIjYw6aIZpCzhuS5YjSZK0mGy2QKuq05LsADyhqq6eh0yS1LTu8XcfAJ5G72KmlwNX07sd0TJgLfCS7skrkjRrm70PWpLfBS4DPt8N759ki3rUJGmReDfw+ar6D8AvA1ex8ZtwS9KsDfIkgbcCBwJ3AFTVZcDeQ8wkSc1K8mjg2cCpAFX1k+55xRu7Cbckzdog56BNVtWdyYNuUzbQszglaRF6EnAr8KEkvwxcAryWjd+E+0E2dbPtzWnphr8LOcsgN9HeUmM7DPfz5zPHXP37LuTflVEapEC7IskfANsk2Qd4DfB/hxtLkpq1Lb3H3726qi5K8m5mcThzUzfb3pyWbvi7kLMMchPtLbVq+SQnXT7oQ3qGZy5ybOxG4rO1kH9XRmmQQ5yvBp5K7xYbHwfuAl43zFCS1LB1wLqquqgb/iS9gu3mqecHT7sJtyTN2iAPS7+nqt5UVb9aVSu69/8+H+EkqTVV9X3ghiRP6ZoOAr7Fz27CDQ++Cbckzdogz+K8gJmfifmcoSSSpPa9Gjg9yXb0nrZyDL0vvDPdhFuSZm2QA9Sv73v/COC/AKM/A1KSRqS7mn3FDKMechNuSdoSg9yo9pJpTf+c5MtDyiNJkrTkDXKIc5e+wYcBBwA/P7REkiRJS9wghzgvoXcOWugd2vwOcOwwQ0mSJC1lgxzi9KkBkiRJ82iQQ5y/t6nxVfXpuYsjSZKkQQ5xHgv8R+BL3fBvABPAnfQOfVqgSZIkzaFBCrQC9pt6xlx3h+y/rqpjhppMkiRpiRrkUU/Lpoqzzs3AvkPKI0mStOQN0oM2keQf6T2Hs4DDgQuGmkqSJGkJG+QqzuOTvBB4dte0pqo+M9xYWiqWrT53xvZVyyc5um/c2hOfN1+RJEkauUF60AAuBe6uqi8meWSSnarq7mEGkyRJWqoGuc3GK4GVwC7ALwB7AO/DZ85JkhqzsV55aaEZ5CKB44BnAXcBVNU1wG7DDCVJkrSUDVKg3VtVP5kaSLItvYsFJEmSNASDFGhfTvJGYIckvwV8Avj74caSJElaugYp0FYDtwKXA68CPge8eUsXmOQpSS7re92V5HVJ3prkxr72Q7Z0GZIkSQvZJi8SSLINcFpV/SHw/rlYYFVdDezf9/k3Ap8BjgFOrqp3zsVyJEmSFqpN9qBV1X3A45JsN6TlHwRcV1XfHdLnS5IkLTiD3AdtLfDPSc4BfjTVWFXvmoPlH07vCQVTjk/yMuBiYFVV3T59hiQr6d32g7GxMSYmJh4Yt2HDhgcNt6TVbMPMtWr55BbPO7bDg+efz223udxjO8xvnkG1+jsGbWeTpBZttEBL8tGqeinw+8DJ9HrbdpqrBXe9ci8ATuiaTgHeRu8K0bcBJwEvnz5fVa0B1gCsWLGixsfHHxg3MTFB/3BLWs02zFxHb8X9iFYtn+Sky3/267n2yPE5SDSYzeVetXySlyyxf8ut1XI2SWrRpnrQDkjyROB7wF8NYdnPBS6tqpsBpn4CJHk/8NkhLFOL2CA3qPSRUZKkhWBTBdr7gM8De9M75Dgl9Hq5nrSVyz6CvsObSXavqvXd4AuBK7by8yVJkhakjRZoVfUe4D1JTqmqP57LhSZ5JPBb9G7bMeUvkuxPr/hbO22cJEnSkrHZiwTmujjrPvMe4LHT2l4618uRJElbxtNGRmuQqzilkfMByJKkpWSQJwlIkiRpHlmgSZIkNcYCTZIkqTGeg6Yt4jlhkiQNjz1okiRJjbFAkyRJaowFmiRJUmM8B00PsZjPL1vM6yZJWjzsQZOkLZBkmyTfSPLZbnjvJBcluSbJmUm2G3VGSQuXBZokbZnXAlf1Db8DOLmq9gFuB44dSSpJi4IFmiTNUpI9gecBH+iGAzwH+GQ3yWnAYaNJJ2kx8Bw0SZq9vwT+BNipG34scEdVTXbD64A9ZpoxyUpgJcDY2BgTExMDL3TDhg2zmn6YWs2yavnkpicesrEdRp9hPnMM8jvQ6u9K6yzQJGkWkjwfuKWqLkkyPtU8w6Q10/xVtQZYA7BixYoaHx+fabIZTUxMMJvph6nVLEeP+EKgVcsnOeny0f9pna8ca48c3+w0rf6utG70v0WStLA8C3hBkkOARwCPptejtnOSbbtetD2Bm0aYUZoXg1wZ/+GDd5yHJIuP56BJ0ixU1QlVtWdVLQMOB75UVUcCFwAv6iY7Cjh7RBElLQL2oEnS3HgDcEaSPwO+AZw64jyLzsZ6a1Ytnxz5oU1prlmgSdIWqqoJYKJ7fz1w4CjzSFo8PMQpSZLUGAs0SZKkxligSZIkNcZz0JaQmU6w9eRaSZLaYw+aJElSYyzQJEmSGuMhTmkLDHL3bIC1Jz5vyEkkSYvRyAq0JGuBu4H7gMmqWpFkF+BMYBmwFnhJVd0+qoySJEmjMOpDnL9RVftX1YpueDVwflXtA5zfDUuSJC0poy7QpjsUOK17fxpw2AizSJIkjcQoz0Er4AtJCvibqloDjFXVeoCqWp9kt+kzJVkJrAQYGxtjYmLigXEbNmx40HBLWsi2avnkQ9rGdpi5fdRazQWzyzaf/+Yt/I5tTMvZJKlFoyzQnlVVN3VF2HlJvj3ITF0htwZgxYoVNT4+/sC4iYkJ+odb0kK2me53tmr5JCdd3t61Iq3mgtllW3vk+HDD9Gnhd2xjWs4mabguv/HOge636UVVDzayQ5xVdVP38xbgM/QeMnxzkt0Bup+3jCqfJEnSqIykQEuyY5Kdpt4Dvw1cAZwDHNVNdhRw9ijySZIkjdKojiGNAZ9JMpXhY1X1+ST/ApyV5Fjge8CLR5RPkiRpZEZSoFXV9cAvz9D+Q+Cg+U8kSZLUjtZusyFJkrTkWaBJkiQ1xgJNkiSpMRZokiRJjbFAkyRJaowFmiRJUmMs0CRJkhpjgSZJktQYCzRJkqTGjOpRT5qFZavPHXUESRoq93PSg9mDJkmS1BgLNEmSpMZYoEmSJDXGAk2SJKkxFmiSJEmNsUCTJElqjAWaJElSY7wPmjREg9zbae2Jz5uHJJorSfYCPgL8PHA/sKaq3p1kF+BMYBmwFnhJVd0+qpySFjZ70CRpdiaBVVX1i8AzgeOS7AesBs6vqn2A87thSdoiFmiSNAtVtb6qLu3e3w1cBewBHAqc1k12GnDYaBJKWgw8xClJWyjJMuBXgIuAsapaD70iLsluG5lnJbASYGxsjImJiYGXt2HDhllNP0xznWXV8sktnndsh62bfy61kqWVHDB4lvn43W7p/9DmWKBJ0hZI8ijgU8DrququJAPNV1VrgDUAK1asqPHx8YGXOTExwWymH6a5znL0VjyLc9XySU66vI0/Z61kaSUHDJ5l7ZHjQ8/S0v+hzfEQpyTNUpKH0yvOTq+qT3fNNyfZvRu/O3DLqPJJWvgs0CRpFtLrKjsVuKqq3tU36hzgqO79UcDZ851N0uLRRv+nJC0czwJeClye5LKu7Y3AicBZSY4Fvge8eET5JC0C816gbeIeQm8FXgnc2k36xqr63Hznk6RNqaqvAhs74eyg+cwiafEaRQ/a1D2ELk2yE3BJkvO6cSdX1TtHkEmSJKkZ816gdZehT12KfneSqXsISZIkiRGfgzbtHkLPAo5P8jLgYnq9bA95TMqm7iHU8v1NtibbMO9l09K9cvq1mgvmPttc/c4u1t9/SVqKRlagzXAPoVOAtwHV/TwJePn0+TZ1D6GW72+yNdm25v5Am9PSvXL6tZoL5j7bXN37Z7H+/kvSUjSS22zMdA+hqrq5qu6rqvuB9wMHjiKbJEnSqM17gbaxewhN3eCx80LgivnOJkmS1IJRHEPa2D2EjkiyP71DnGuBV40gmyRJ0siN4irOjd1DyHueSVvh8hvvHOh8xbUnPm8e0kiStkabZ2FLkqQlZZlfMB/EZ3FKkiQ1xh40SZK0ICylXjZ70CRJkhpjD5okaWgG6fGQ9FD2oEmSJDXGHjRpxJbSORWSpMFYoI2Y3f+SJGk6D3FKkiQ1xh40SdIW8QiANDz2oEmSJDXGAk2SJKkxFmiSJEmNsUCTJElqjAWaJElSY7yKU1oABrlabtXyeQgiSYvAoFcgj/Im4fagSZIkNcYCTZIkqTEWaJIkSY3xHDRJ0kNs7hydVcsn8U+INDz2oEmSJDXGrz9bYEueP7dq+SRH+9w6SQ3wGZrSYAb5vzKsKz3tQZMkSWqMPWjSEjOf3winlrWpHuRR3mdIklrVXA9akoOTXJ3k2iSrR51Hkgbl/kvSXGmqBy3JNsBfA78FrAP+Jck5VfWtufj8UR5LlhYbz2N6sPnYf3kuq7R5m9o3LaT/Q00VaMCBwLVVdT1AkjOAQ4E52cENwj86krbQyPdfkhaPVNWoMzwgyYuAg6vqFd3wS4FnVNXxfdOsBFZ2g08Bru77iF2BH8xT3NlqNZu5Zq/VbK3mgrnN9sSqetwcfdacGWT/1bVvah+2OS39G5tlZq1kaSUHmKXfwPuv1nrQMkPbgyrIqloDrJlx5uTiqloxjGBbq9Vs5pq9VrO1mgvazjaHNrv/gk3vwza7gIa2o1lm1kqWVnKAWbZUaxcJrAP26hveE7hpRFkkaTbcf0maM60VaP8C7JNk7yTbAYcD54w4kyQNwv2XpDnT1CHOqppMcjzwj8A2wAer6spZfMQWHTaYJ61mM9fstZqt1VzQdrY5MQf7r0G0tB3NMrNWsrSSA8yyRZq6SECSJEntHeKUJEla8izQJEmSGrNgC7QkH0xyS5Ir+tremuTGJJd1r0NGkGuvJBckuSrJlUle27XvkuS8JNd0Px/TSK4Wttkjknw9yb922f60a987yUXdNjuzO/G6hVwfTvKdvm22/3zmmpZxmyTfSPLZbnik22wTuZrZZgtRkld3j5C6Mslf9LWf0D1W6uokvzOPeV6fpJLs2g0nyXu6LN9M8vR5yPC/k3y7W95nkuzcN27et0tG+JivFv/utLJvSrJzkk92vytXJfm1Uf89HlhVLcgX8Gzg6cAVfW1vBV4/4ly7A0/v3u8E/BuwH/AXwOqufTXwjkZytbDNAjyqe/9w4CLgmcBZwOFd+/uAP24k14eBF41ym/Vl/P+BjwGf7YZHus02kauZbbbQXsBvAF8Etu+Gd+t+7gf8K7A9sDdwHbDNPOTZi96FEN8Fdu3aDgH+ofs/80zgonnI8dvAtt37d0ztU0exXehdFHId8CRgu275+83j70hzf3da2TcBpwGv6N5vB+w86r/Hg74WbA9aVX0FuG3UOaarqvVVdWn3/m7gKmAPeo98Oa2b7DTgsEZyjVz1bOgGH969CngO8MmufRTbbGO5mpBkT+B5wAe64TDibTZTLm21PwZOrKp7Aarqlq79UOCMqrq3qr4DXEvvcVPDdjLwJzz4/8KhwEe6/zMXAjsn2X2YIarqC1U12Q1eSO++c1NZ5nu7PPCYr6r6CTD1mK950drfnVb2TUkeTa8z51SAqvpJVd3BiP8eD2rBFmibcHzX5f3BUXdbJlkG/Aq9npexqloPvf9MwG6N5IIGtlnXHX4ZcAtwHr1vo3f07YDXMYKCcnquqpraZm/vttnJSbaf71ydv6T3h/L+bvjB3tNUAAAgAElEQVSxNLDNZsg1pYVtthDtC/x6d3joy0l+tWvfA7ihb7qh/3sneQFwY1X967RR855lmpfT68EbVZZRr/8DGvm708q+6UnArcCHusOtH0iyIw39Pd6UxVagnQL8ArA/sB44aVRBkjwK+BTwuqq6a1Q5ppshVxPbrKruq6r96X0LPhD4xZkmm99UD82V5GnACcB/AH4V2AV4w3znSvJ84JaquqS/eYZJ53WbbSQXNLDNWpbki0mumOF1KL37VT6G3qHD/wac1fVIDOXfezNZ3gT8j5lmG0GWqWneBEwCpw8zy+aijmCZDw3RwN+dxvZN29I7FeqUqvoV4Ef0DmkuCE3dqHZrVdXNU++TvB/47ChyJHk4vf8kp1fVp7vmm5PsXlXru67/Wzb+CfOXq5VtNqWq7kgyQe+P0c5Jtu2+dY30sTl9uQ6uqnd2zfcm+RDw+hFEehbwgvQu6ngE8Gh631pHvc0ekivJ31bVH3bjR7nNmlVVv7mxcUn+GPh09U6Y+XqS++k98Hkoj5baWJYky+md0/WvvfqQPYFLkxw431n6Mh0FPB84qNs+DCvLZoz8MV8N/d1pad+0DljXd+Tjk/QKtJH/PR7EoupBm3bOwwuBKzY27RAzhN7x7quq6l19o84BjureHwWc3UKuRrbZ49JdgZVkB+A36Z1DcQHwom6yUWyzmXJ9e2qbddv0MEawzarqhKras6qW0Xuk0Jeq6khGvM02kusPW9hmC9jf0Tt/hyT70jvR+Qf09imHJ9k+yd7APsDXhxWiqi6vqt2qaln377uO3onp3++yvCw9zwTunDqENCxJDqbXE/uCqrqnb9S8bpfOSB/z1dLfnZb2Td3v5g1JntI1HQR8ixH/PR7YMK9AGOYL+Di9Q3I/pbejOBb4KHA58E16/wC7jyDXf6LXdftN4LLudQi9Y/DnA9d0P3dpJFcL2+yXgG90Ga4A/kfX/iR6O9ZrgU/QXcXWQK4vddvsCuBv6a70HNULGOdnV0qNdJttIldT22whvegVZH/bbbtLgef0jXsTvfM1rwaeO8+51vKzqzgD/HWX5XJgxTws/1p6531N7c/eN8rt0u1P/61b7pvm+d+i1b87I9830Tt95+Ju2/wdvdMFRrpdBn35qCdJkqTGLKpDnJIkSYuBBZokSVJjLNAkSZIaY4EmSZLUGAs0SZKkxligSZIkNcYCTZIkqTEWaJIkSY2xQJMkSWqMBZokSVJjLNAkSZIaY4EmSZLUGAs0SZKkxligSZIkNcYCTZIkqTEWaJIkSY2xQJMkSWqMBZokSVJjLNA0NEmOTvLVTYz/hyRHzWcmSZoPSTYkedKoc2jh2nbUAbR0VdVzR51Bkoahqh416gxa2OxBkzpJ/MIiSWqCBZrmRJK9knw6ya1JfpjkvX3j3pnk9iTfSfLcvvaJJK/o3j85yZeT3JnkB0nO7Jvut5J8uxv33m66qfnemuRv+6ZdlqSmiq0kxyS5KsndSa5P8qq+aceTrEvyhiTfBz7UtT8/yWVJ7kjyf5P80hA3naSGJVmb5IQk3+r2Yx9K8ohu3CuTXJvktiTnJHl833yV5Mnd+0O6+e9OcmOS13ftuyb5bLevuS3JPyV5WDfuF7t95B1Jrkzygr7P/nCSv05ybveZFyX5hfndMho2CzRttSTbAJ8FvgssA/YAzuhGPwO4GtgV+Avg1CSZ4WPeBnwBeAywJ/BX3WfvCnwKeHP3GdcBz5pFvFuA5wOPBo4BTk7y9L7xPw/sAjwRWNmN+yDwKuCxwN8A5yTZfhbLlLS4HAn8DvALwL7Am5M8B/hfwEuA3ent/87YyPynAq+qqp2ApwFf6tpXAeuAxwFjwBuBSvJw4O/p7RN3A14NnJ7kKX2feQTwp/T2mdcCb5+TNVUzLNA0Fw4EHg/8t6r6UVX9e1VNXRzw3ap6f1XdB5xGb0c2NsNn/JRekfT4afMfAnyrqj5ZVT8F/hL4/qDBqurcqrquer5Mb4f3632T3A+8paruraofA68E/qaqLqqq+6rqNOBe4JmDLlPSovPeqrqhqm6jVwgdQa9o+2BVXVpV9wInAL+WZNkM8/8U2C/Jo6vq9qq6tK99d+CJVfXTqvqnqip6+5tHASdW1U+q6kv0vgQf0feZn66qr1fVJHA6sP+cr7VGygJNc2EveoXY5AzjHiimquqe7u1MJ8/+CRDg6113/su79scDN/R9RvUPb06S5ya5sDt8cAe9gm/Xvklurap/7xt+IrCqO6xwRzfPXl0OSUtT/z7nu/T2B4/v3gNQVRuAH9I7gjDdf6G37/lud4rGr3Xt/5te79cXulMwVnftjwduqKr7py23/7P7v6jew8z7VS1gnhStuXAD8IQk226kSNusqvo+vd4rkvwn4ItJvgKsp1cg0Y1L/zDwI+CRfcM/3zft9vQOj74MOLuqfprk7+gVgg8seoZ1eXtVebhA0pT+fc4TgJu61xOnGpPsSO+0iBunz1xV/wIc2h26PB44C9irqu6md5hzVZKnAhck+Zfus/dK8rC+Iu0JwL/N+ZqpWfagaS58nV4hdWKSHZM8IslszhMjyYuT7NkN3k6vcLoPOBd4apLf6078fw19RRhwGfDsJE9I8nP0DjNM2Q7YHrgVmOwuUPjtzUR5P/BHSZ6Rnh2TPC/JTrNZH0mLynFJ9kyyC73zxM4EPgYck2T/7svgnwMXVdXa/hmTbJfkyCQ/152mcRe9fdvUBUlP7r54TrXfB1xE78vnnyR5eJJx4HfZ+DluWoQs0LTVuvPLfhd4MvA9eie9/v4sP+ZXgYuSbADOAV5bVd+pqh8ALwZOpHf4YB/gn/uWfR69neU3gUvonacxNe5uegXdWfSKvj/oPntT63IxvZ6893bzXAscPct1kbS4fIze+avXd68/q6rzgf9Or5d+Pb0LCA7fyPwvBdYmuQv4I+APu/Z9gC8CG4CvAf+nqiaq6ifAC4DnAj8A/g/wsqr69hDWTY1K75QeaeFIMgH8bVV9YNRZJC1uSdYCr6iqL446i5YWe9AkSZIaY4EmSZLUGA9xSpIkNcYeNEmSpMYs6Pug7brrrrVs2bKBp//Rj37EjjvuOLxAjVgK67kU1hGWxnrOdh0vueSSH1TV44YYad7MZh/Wwu+CGcxghq3LMKv9V1Ut2NcBBxxQs3HBBRfMavqFaims51JYx6qlsZ6zXUfg4mpg/zMXr9nsw1r4XTCDGcywdRlms//yEKckSVJjLNAkSZIaY4EmSZLUmKEVaEmekuSyvtddSV6XZJck5yW5pvv5mG76JHlPkmuTfDPJ04eVTZIkqWVDK9Cq6uqq2r+q9gcOAO4BPgOsBs6vqn2A87th6D1zbJ/utRI4ZVjZJEmSWjZfhzgPAq6rqu8ChwKnde2nAYd17w8FPtJd6HAhsHOS3ecpnyRJUjPm6z5ohwMf796PVdV6gKpan2S3rn0P4Ia+edZ1bev7PyjJSno9bIyNjTExMTFwiA0bNsxq+oVqKaznUlhHWBrruRTWUZJma+gFWpLtgBcAJ2xu0hnaHvIcqqpaA6wBWLFiRY2Pjw+cZWJigtlMv1AthfVcCusIS2M9l8I6StJszcchzucCl1bVzd3wzVOHLruft3Tt64C9+ubbE7hpHvJJkiQ1ZT4OcR7Bzw5vApwDHAWc2P08u6/9+CRnAM8A7pw6FDpXLr/xTo5efe4mp1l74vPmcpGStCAtm2FfuWr55IP2oe4vpeEZaoGW5JHAbwGv6ms+ETgrybHA94AXd+2fAw4BrqV3xecxw8wmSZLUqqEWaFV1D/DYaW0/pHdV5/RpCzhumHkkSQvXstXnPqQXbzp79bRY+CQBSZKkxligSZIkNcYCTZIkqTEWaJIkSY2xQJMkSWqMBZokSVJjLNAkSZIaY4EmSZLUGAs0SZKkxligSZIkNcYCTZIkqTEWaJIkSY2xQJMkSWqMBZokSVJjLNAkSZIaY4EmSZLUGAs0SZKkxligSZIkNcYCTZIkqTEWaJIkSY2xQJMkSWqMBZokSVJjLNAkaZokeyW5IMlVSa5M8tqu/a1JbkxyWfc6pG+eE5Jcm+TqJL8zuvSSFoNtRx1Akho0CayqqkuT7ARckuS8btzJVfXO/omT7AccDjwVeDzwxST7VtV985pa0qJhD5okTVNV66vq0u793cBVwB6bmOVQ4IyqureqvgNcCxw4/KSSFquh9qAl2Rn4APA0oICXA1cDZwLLgLXAS6rq9iQB3g0cAtwDHD21g5SkUUmyDPgV4CLgWcDxSV4GXEyvl+12esXbhX2zrWMjBV2SlcBKgLGxMSYmJgbKsWHDhoGnnQurlk8+pG1shwe3z2ce6C17eobp5iPTfP9bmGFpZhj2Ic53A5+vqhcl2Q54JPBG4PyqOjHJamA18AbgucA+3esZwCndT0kaiSSPAj4FvK6q7kpyCvA2el843wacRO+LZ2aYvWb6zKpaA6wBWLFiRY2Pjw+UZWJigkGnnQtHrz73IW2rlk9y0uU/+7Ox9sj5ywO9TNMzTDcfmeb738IMSzPD0A5xJnk08GzgVICq+klV3UHvUMBp3WSnAYd17w8FPlI9FwI7J9l9WPkkaVOSPJxecXZ6VX0aoKpurqr7qup+4P387DDmOmCvvtn3BG6az7ySFpdh9qA9CbgV+FCSXwYuAV4LjFXVeuid55Fkt276PYAb+uafOkSwvv9Dt/TwADy0e34mo+4qnQstdPkO21JYR1ga69niOnanXJwKXFVV7+pr331q/wW8ELiie38O8LEk76J3kcA+wNfnMbKkRWaYBdq2wNOBV1fVRUneTe9w5sYMdIhgSw8PAPzV6Wdvsmsc5r/Lfhha6PIdtqWwjrA01rPRdXwW8FLg8iSXdW1vBI5Isj+9fdNa4FUAVXVlkrOAb9G7AvQ4r+CUtDWGWaCtA9ZV1UXd8CfpFWg3T30L7Q5h3tI3vYcIJI1cVX2Vmb80fm4T87wdePvQQklaUoZ2DlpVfR+4IclTuqaD6H27PAc4qms7Cji7e38O8LL0PBO4s+9QgiRJ0pIx7Ks4Xw2c3l3BeT1wDL2i8KwkxwLfA17cTfs5erfYuJbebTaOGXI2SZKkJg21QKuqy4AVM4w6aIZpCzhumHkkSZIWAp8kIEmS1BgLNEmSpMZYoEmSJDXGAk2SJKkxFmiSJEmNsUCTJElqjAWaJElSYyzQJEmSGmOBJkmS1BgLNEmSpMZYoEmSJDXGAk2SJKkxFmiSJEmNsUCTJElqjAWaJElSYyzQJEmSGmOBJkmS1BgLNEmSpMZYoEmSJDXGAk2SJKkxFmiSJEmNsUCTJElqjAWaJElSYyzQJEmSGmOBJkmS1BgLNEmSpMYMtUBLsjbJ5UkuS3Jx17ZLkvOSXNP9fEzXniTvSXJtkm8mefows0mSJLVqPnrQfqOq9q+qFd3wauD8qtoHOL8bBngusE/3WgmcMg/ZJEmSmjOKQ5yHAqd1708DDutr/0j1XAjsnGT3EeSTJEkaqW2H/PkFfCFJAX9TVWuAsapaD1BV65Ps1k27B3BD37zrurb1/R+YZCW9HjbGxsaYmJgYOMzYDrBq+eQmp5nN57Vqw4YNi2I9NmUprCMsjfVsdR2T7AV8BPh54H5gTVW9O8kuwJnAMmAt8JKquj1JgHcDhwD3AEdX1aWjyC5p4Rt2gfasqrqpK8LOS/LtTUybGdrqIQ29Im8NwIoVK2p8fHzgMH91+tmcdPmmV3ntkYN/XqsmJiaYzXZZiJbCOsLSWM+G13ESWFVVlybZCbgkyXnA0fRO0zgxyWp6p2m8gQefpvEMeqdpPGMkySUteEM9xFlVN3U/bwE+AxwI3Dx16LL7eUs3+Tpgr77Z9wRuGmY+SdqYqlo/1QNWVXcDV9Hr1fc0DUlDN7QetCQ7Ag+rqru7978N/E/gHOAo4MTu59ndLOcAxyc5g963zjunDoVK0iglWQb8CnARIzpNY74PBc90Osj000Tm+9D0quWTmz1VZT4ytXBY3gyLP8MwD3GOAZ/pnZbBtsDHqurzSf4FOCvJscD3gBd303+O3rkb19I7f+OYIWaTpIEkeRTwKeB1VXVXt0+bcdIZ2ubsNI35PhR89OpzH9K2avnkg04Tme9TQo5efe5DMkw3H5laOCxvhsWfYWgFWlVdD/zyDO0/BA6aob2A44aVR5JmK8nD6RVnp1fVp7vmm5Ps3vWeeZqGpKHwSQKSNIPuqsxTgauq6l19o6ZO04CHnqbxsu6m28/E0zQkbYVhX8UpSQvVs4CXApcnuaxreyO982c9TUPSUFmgSdIMquqrzHxeGXiahqQhs0CTJGmaZTNcJDFl1fLJBy6iWHvi8+YrkpYYz0GTJElqjAWaJElSYyzQJEmSGmOBJkmS1BgLNEmSpMZYoEmSJDXGAk2SJKkxFmiSJEmNsUCTJElqjAWaJElSYyzQJEmSGmOBJkmS1BgLNEmSpMZYoEmSJDVmoAItyS7DDiJJkqSeQXvQLkryiSSHJMlQE0mSJC1xgxZo+wJrgJcC1yb58yT7Di+WJEnS0jVQgVY951XVEcArgKOAryf5cpJfG2pCSZKkJWbbQSZK8ljgD+n1oN0MvBo4B9gf+ASw97ACSpIkLTUDFWjA14CPAodV1bq+9ouTvG/uY0mSJC1dgxZoT6mqmmlEVb1jDvNIkiQteYNeJPCFJDtPDSR5TJJ/HGTGJNsk+UaSz3bDeye5KMk1Sc5Msl3Xvn03fG03ftks10WSJGlRGLRAe1xV3TE1UFW3A7sNOO9rgav6ht8BnFxV+wC3A8d27ccCt1fVk4GTu+kkSZKWnEELtPuSPGFqIMkTgRkPefZLsifwPOAD3XCA5wCf7CY5DTise39oN0w3/iDvuSZJkpaiQc9BexPw1SRf7oafDawcYL6/BP4E2KkbfixwR1VNdsPrgD2693sANwBU1WSSO7vpf9D/gUlWTi17bGyMiYmJAVcBxnaAVcsnNznNbD6vVRs2bFgU67EpS2EdYWms51JYR0marYEKtKr6fJKnA88EAvzXqvrBpuZJ8nzglqq6JMn4VPNMHz/AuP4sa+jdNJcVK1bU+Pj49Ek26q9OP5uTLt/0Kq89cvDPa9XExASz2S4L0VJYR1ga67kU1lGSZmvQHjSA7YHbunn2S0JVfWUT0z8LeEGSQ4BHAI+m16O2c5Jtu160PYGbuunXAXsB65JsC/xctzxJkqQlZdAb1b4D+H3gSuD+rrmAjRZoVXUCcEI3/zjw+qo6MskngBcBZ9B7IsHZ3SzndMNf68Z/aWO39pAkSVrMBu1BO4zevdDunYNlvgE4I8mfAd8ATu3aTwU+muRaej1nh8/BsiRJkhacQQu064GHA1tUoFXVBDDRvb8eOHCGaf4dePGWfL4kSdJiMmiBdg9wWZLz6SvSquo1Q0klSZK0hA1aoJ3TvSRJkjRkg95m47QkOwBPqKqrh5xJkkYuyQeBqdsFPa1reyvwSuDWbrI3VtXnunEn0Hsiyn3Aa6pqoMfhSdJMBnqSQJLfBS4DPt8N75/EHjVJi9mHgYNnaD+5qvbvXlPF2X70Lmx6ajfP/0myzbwllbToDPqop7fSO7H/DoCqugzYe0iZJGnkuvs8DnovxkOBM6rq3qr6DnAtM1wMJUmDGvQctMmqunPaozG9R5mkpej4JC8DLgZWVdXt9B5Vd2HfNP2PsXuQLX1c3Xw/Emumx+JNf1zefD+ia9Xyyc0+sm+uMm1qGf0ZRvWYshYekWaG4WYYtEC7IskfANsk2Qd4DfB/5zyNJLXtFOBt9L6gvg04CXg5Az6qDrb8cXXz/Uiso1ef+5C2VcsnH/S4vPl+NN7Rq899SIbp5irTTOs/pT/DqB4P2MIj0sww3AyDHuJ8Nb1zK+4FPg7cBbxuztNIUsOq6uaquq+q7gfez88OY049qm5K/2PsJGnWBr2K8x7gTd1LkpakJLtX1fpu8IXAFd37c4CPJXkX8HhgH+DrI4goaZEY9FmcFzBDd31VPWfOE0lSA5J8HBgHdk2yDngLMJ5kf3r7w7XAqwCq6sokZwHfAiaB46rqvlHklrQ4DHoO2uv73j8C+C/0dkKStChV1REzNJ86Q9vU9G8H3j68RJKWkkEPcV4yremfk3x5CHkkSZKWvEEPce7SN/gw4ADg54eSSJIkaYkb9BDnJfTOuQi9Q5vfofdIE0mSJM2xQQ9x+tQASZKkeTLoIc7f29T4qvr03MSRJEnSoIc4jwX+I/Clbvg3gAngTnqHPi3QJEmS5sigBVoB+03doDHJ7sBfV9UxQ0smSZK0RA36qKdlfXfPBrgZ2HcIeSRJkpa8QXvQJpL8I73ncBZwOHDB0FJJkiQtYYNexXl8khcCz+6a1lTVZ4YXS5IkaekatAcN4FLg7qr6YpJHJtmpqu4eVjBJkqSlaqBz0JK8Evgk8Ddd0x7A3w0rlCRJ0lI26EUCxwHPAu4CqKprgN2GFUqSJGkpG7RAu7eqfjI1kGRbehcLSJIkaY4NWqB9OckbgR2S/BbwCeDvNzVDkkck+XqSf01yZZI/7dr3TnJRkmuSnJlku659+2742m78si1fLUmSpIVr0AJtNXArcDnwKuBzwJs3M8+9wHOq6peB/YGDkzwTeAdwclXtA9zOzx66fixwe1U9GTi5m06SJGnJ2WyBlmQb4CNV9f6qenFVvah7v8lDnNWzoRt8ePcq4Dn0LjgAOA04rHt/aDdMN/6gJJnd6kiSJC18m73NRlXdl+RxSbbrPw9tEF1xdwnwZOCvgeuAO6pqsptkHb0rQul+3tAtczLJncBjgR9M+8yVwEqAsbExJiYmBs4ztgOsWj65yWlm83mt2rBhw6JYj01ZCusIS2M9l8I6StJsDXoftLXAPyc5B/jRVGNVvWtTM1XVfcD+/6+9+42RqzrvOP59gqliCKlBwIraViCShRLFaqArSosUbUsaGYhiXoQURMFGVK4qUkFrqXLzBlXqC78oUQOqaC2gmNSBUv7IFiAKIqxopEIBQzHEpHGpC4tdnJbyZ0urZNOnL+YuGtbj3dnN3Lln534/0mpmzt6593eG5fBwz51zI2IV8CDwmV6bVY+9zpYddZYuM3cAOwDGx8dzYmKij/gdt+zazU375u/ywSv731+pJicnWcznshy1oY/Qjn62oY+StFjzTnFGxLerp78JPFRtf1LXT18y8x1gEjgfWFV9CxRgDXCoej4FrK2OuwL4eeDtfo8hSZI0KhY6g/ZLEfEp4HXglsXsOCJOA36Sme9ExErgi3Qu/H8S+CpwD7AJ2F29ZU/1+h+q3393oevcJEmSRtFCBdpfAI8CZwHPdbUHnenHT8/z3jOAndV1aB8D7s3MhyLi+8A9EfEnwAvA7dX2twPfjogDdM6cXb7YzkiSJI2CeQu0zLwZuDkibs3M313MjjPzJeCcHu2vAef1aP9f4LLFHEOSJGkU9fUlgcUWZ5Kkwdr35rts3vbwvNsc3H7JkNJIqlu/C9VKkiRpSCzQJEmSCmOBJkmSVBgLNEmSpMJYoEmSJBXGAk2SJKkwFmiSJEmFsUCTJEkqjAWaJElSYSzQJKmHiLgjIo5ExMtdbadExOMR8cPq8eSqPSLi5og4EBEvRcS5zSWXNAos0CSptzuBDXPatgFPZOY64InqNcBFwLrqZwtw65AyShpRFmiS1ENmPgW8Pad5I7Czer4TuLSr/a7seBpYFRFnDCeppFHU183SJUkAjGXmYYDMPBwRp1ftq4E3urabqtoOz91BRGyhc5aNsbExJicn+zvwSti6fmbebfrdVz96HWtuhkEerx9b188s+DkMKtN8x+jOMOzPYNb09HRjxzbDcDJYoEnSzy56tGWvDTNzB7ADYHx8PCcmJvo6wC27dnPTvvmH7INX9revfmze9vBRbVvXz3wkwyCP14/N2x4+KsNcg8rUq/+zujMM+zOYNTk5Sb9/O2ZYnhmc4pSk/r01O3VZPR6p2qeAtV3brQEODTmbpBFigSZJ/dsDbKqebwJ2d7VfXX2b83zg3dmpUElaCqc4JamHiLgbmABOjYgp4EZgO3BvRFwLvA5cVm3+CHAxcAD4ALhm6IEljRQLNEnqITOvOMavLuyxbQLX1ZtIUps4xSlJklQYCzRJkqTCWKBJkiQVxgJNkiSpMBZokiRJhbFAkyRJKkxtBVpErI2IJyNif0S8EhHXV+2nRMTjEfHD6vHkqj0i4uaIOBARL0XEuXVlkyRJKlmdZ9BmgK2Z+RngfOC6iPgssA14IjPXAU9UrwEuAtZVP1uAW2vMJkmSVKzaCrTMPJyZe6vn7wP7gdXARmBntdlO4NLq+Ubgrux4Glg1e887SZKkNhnKnQQi4kzgHOAZYGz2HnWZeTgiTq82Ww280fW2qartI/ezi4gtdM6wMTY2xuTkZN85xlbC1vUz826zmP2Vanp6eiT6MZ829BHa0c829FGSFqv2Ai0iPgHcD9yQme9FxDE37dGWRzVk7gB2AIyPj+fExETfWW7ZtZub9s3f5YNX9r+/Uk1OTrKYz2U5akMfoR39bEMfpUE4c9vDHz7fun6GzV2vux3cfsmwIqlGtX6LMyKOp1Oc7crMB6rmt2anLqvHI1X7FLC26+1rgEN15pMkSSpRnd/iDOB2YH9mfrPrV3uATdXzTcDurvarq29zng+8OzsVKkmS1CZ1TnFeAFwF7IuIF6u2bwDbgXsj4lrgdeCy6nePABcDB4APgGtqzCZJklSs2gq0zPweva8rA7iwx/YJXFdXHkmSpOXCOwlIkiQVxgJNkiSpMBZokiRJhbFAkyRJKowFmiRJUmEs0CRJkgpjgSZJklQYCzRJkqTCWKBJkiQVxgJNkiSpMBZokiRJhbFAkyRJKowFmiRJUmEs0CRJkgpjgSZJklQYCzRJkqTCWKBJkiQVZkXTASRpuYmIg8D7wE+Bmcwcj4hTgL8BzgQOAnPa/psAAAkQSURBVF/LzP9qKqOk5c0zaJK0NL+WmZ/PzPHq9TbgicxcBzxRvZakJbFAk6TB2AjsrJ7vBC5tMIukZc4pTklavAQei4gE/jIzdwBjmXkYIDMPR8Tpvd4YEVuALQBjY2NMTk72dcCxlbB1/cy82/S7r370OtbcDIM8Xj+2rp9Z8HMYVKb5jtGdYZifQXem+T6HYWWanp4e+t9AmzJYoEnS4l2QmYeqIuzxiHi13zdWxdwOgPHx8ZyYmOjrfbfs2s1N++Yfsg9e2d+++rF528NHtW1dP/ORDIM8Xj82b3v4qAxzDSpTr/7P6s4wzM+gO9N8n8OwMk1OTtLv368ZFs8pTklapMw8VD0eAR4EzgPeiogzAKrHI80llLTcWaBJ0iJExIkRcdLsc+BLwMvAHmBTtdkmYHczCSWNAqc45zhzntPasw5uv2QISSQVagx4MCKgM4Z+JzMfjYhngXsj4lrgdeCyBjNKWuZqLdAi4g7gy8CRzPxc1dZzraDojHbfAi4GPgA2Z+beOvNJ0mJl5mvAL/Zo/0/gwuEnkjSK6p7ivBPYMKftWGsFXQSsq362ALfWnE2SJKlItRZomfkU8Pac5mOtFbQRuCs7ngZWzV5wK0mS1CZNXIN2rLWCVgNvdG03VbUd7n7zUtcQgv7WEepH02uuLKSEdWHq1oY+Qjv62YY+StJilfQlgejRlkc1LHENIehvHaF+DHvtn8UqYV2YurWhj9COfrahj5K0WE0ss3GstYKmgLVd260BDg05myRJUuOaKNCOtVbQHuDq6DgfeHd2KlSSJKlN6l5m425gAjg1IqaAG4Ht9F4r6BE6S2wcoLPMxjV1ZpMkSSpVrQVaZl5xjF8dtVZQZiZwXZ15JElSfxZauH3r+hkmhhOllbzVkyRJUmEs0CRJkgpjgSZJklQYCzRJkqTCWKBJkiQVxgJNkiSpMBZokiRJhbFAkyRJKowFmiRJUmFqvZPAqFpodeVZB7dfUnMSSZI0ijyDJkmSVBgLNEmSpMJYoEmSJBXGAk2SJKkwFmiSJEmFsUCTJEkqjAWaJElSYVwHrWH9rKnmemqSJLWLBVqN+l3QVpIkqZsFmiRJWhbmnvjYun6GzXPaRmXWyWvQJEmSCuMZtGXA69QkSWoXz6BJkiQVxgJNkiSpME5xjojuadBeF02C06CSJC0XxRVoEbEB+BZwHHBbZm5vONLI6HfZj34KOa+Lk47m+CVpUIoq0CLiOODPgd8ApoBnI2JPZn6/2WTtMqj12wa5Dlxpxd4gi12NBscvafT0M9bfueHEWo5dVIEGnAccyMzXACLiHmAj4ADXcv2sfVOiEs80DqpwHtSZ1roGtwY4fkkamMjMpjN8KCK+CmzIzN+uXl8F/HJmfr1rmy3Alurl2cAPFnGIU4H/GFDckrWhn23oI7Sjn4vt46cy87S6wixVP+NX1b7UMayEvwUzmMEMP1uGvsev0s6gRY+2j1SQmbkD2LGknUc8l5njS3nvctKGfrahj9COfo5QHxccv2DpY1gJn5MZzGCG4WUobZmNKWBt1+s1wKGGskjSYjh+SRqY0gq0Z4F1EXFWRPwccDmwp+FMktQPxy9JA1PUFGdmzkTE14G/o/M19Tsy85UBHmJJU6PLUBv62YY+Qjv6ORJ9bMn4ZYYOM3SYoaOWDEV9SUCSJEnlTXFKkiS1ngWaJElSYVpRoEXEhoj4QUQciIhtTeepQ0SsjYgnI2J/RLwSEdc3nakuEXFcRLwQEQ81naUuEbEqIu6LiFerf6a/0nSmOkTE71d/ry9HxN0R8fGmM5Wo6TEsIu6IiCMR8fKwj92VofExLiI+HhH/GBH/VGX442FnqHI0PgZGxMGI2BcRL0bEcw0cv9ExMiLOrvo++/NeRNww0GOM+jVo1e1X/pmu268AV4za7Vci4gzgjMzcGxEnAc8Dl45aPwEi4g+AceCTmfnlpvPUISJ2An+fmbdV3wg8ITPfaTrXIEXEauB7wGcz838i4l7gkcy8s9lkZSlhDIuILwDTwF2Z+blhHXdOhsbHuIgI4MTMnI6I4+n8/V6fmU8PK0OVo/ExMCIOAuOZ2cgisSWNkdW/o2/SWZj63wa13zacQfvw9iuZ+WNg9vYrIyUzD2fm3ur5+8B+YHWzqQYvItYAlwC3NZ2lLhHxSeALwO0AmfnjUSvOuqwAVkbECuAEXDesl8bHsMx8Cnh7mMfskaHxMS47pquXx1c/Qz3L0YYxcCEFjpEXAv8yyOIM2lGgrQbe6Ho9xQgWLt0i4kzgHOCZZpPU4s+APwT+r+kgNfo08CPgr6ppjNsiYmRuWDkrM98E/hR4HTgMvJuZjzWbqkitG8MW0uQYV00vvggcAR7PzGFnKGUMTOCxiHi+un3ZMJU2Rl4O3D3onbahQOvr9iujIiI+AdwP3JCZ7zWdZ5Ai4svAkcx8vuksNVsBnAvcmpnnAP8NjNy1kxFxMp0zQWcBvwCcGBG/1WyqIrVqDFtI02NcZv40Mz9P504R50XE0KZ8CxsDL8jMc4GLgOuqafBhKWaMrKZXvwL87aD33YYCrTW3X6muibgf2JWZDzSdpwYXAF+prn24B/j1iPjrZiPVYgqY6vo/8/voDEaj5ovAv2bmjzLzJ8ADwK82nKlErRnDFlLSGFdNqU0CG4Z42GLGwMw8VD0eAR6kMxU/LCWNkRcBezPzrUHvuA0FWituv1JdvHo7sD8zv9l0njpk5h9l5prMPJPOP8fvZubInXHJzH8H3oiIs6umC4GR+7IHnanN8yPihOrv90I61xXpo1oxhi2khDEuIk6LiFXV85V0/ifj1WEdv5QxMCJOrL6oQTW1+CVgaN/wLWyMvIIapjehsFs91WEIt18pxQXAVcC+6voIgG9k5iMNZtLS/R6wq/oP8mvANQ3nGbjMfCYi7gP2AjPAC5Rx25ailDCGRcTdwARwakRMATdm5u3DzEAZY9wZwM7qW3sfA+7NzJFd7mceY8CDnZqZFcB3MvPRIWdofIyMiBPofLv6d2rZ/6gvsyFJkrTctGGKU5IkaVmxQJMkSSqMBZokSVJhLNAkSZIKY4EmSZJUGAs0SZKkwligSZIkFeb/Aa+d/2mv9pV2AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 720x720 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 作为例子，我们将如下分布的随机数进行　可视化。\n",
    "# 1. n = 100, P = 0.3 的二项分布\n",
    "# 2. 均值为10、标准差为　2 的正态分布\n",
    "# 3. 自由度为0.5 的卡方分布\n",
    "# 4.  为　2 的泊松分布\n",
    "\n",
    "rn5 = npr.binomial(100, 0.3 , size)\n",
    "rn6 = npr.normal(10, 20, size)\n",
    "rn7 = npr.chisquare(0.5, size)\n",
    "rn8 = npr.poisson(2.0, size)\n",
    "\n",
    "\n",
    "fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(nrows = 2, ncols = 2, figsize = (10, 10))\n",
    "\n",
    "ax1.hist(rn5, bins = 25)\n",
    "ax1.set_title('binomial')\n",
    "ax1.set_ylabel('frequency')\n",
    "ax1.grid(True)\n",
    "\n",
    "\n",
    "ax2.hist(rn6, bins = 25)\n",
    "ax2.set_title('normal')\n",
    "ax2.grid(True)\n",
    "\n",
    "ax3.hist(rn7, bins = 25)\n",
    "ax3.set_title('chisquare')\n",
    "ax3.set_ylabel('frequency')\n",
    "ax3.grid(True)\n",
    "\n",
    "\n",
    "ax4.hist(rn8, bins = 25)\n",
    "ax4.set_title('poisson')\n",
    "ax4.grid(True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
